/**
 * FileName: Game
 * Author:   Administrator
 * Date:     2020/9/17 11:15
 * Description: 少丶客
 * History:
 * <time>          <version>
 * 修改时间           版本号
 */
package com.shaokel;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;

/**
 * 〈一句话功能简述〉
 * 〈少丶客〉
 *
 * @create 2020/9/17
 * @since 1.0.0
 */
public class Game extends JFrame implements MouseMotionListener {

    // 创建list集合，用来存储热狗
    private List<HotDog> list = new ArrayList();
    // 创建思聪对象
    private Wsc wsc = new Wsc();
    private HotDog dog = new HotDog();

    public static void main(String[] args) {
        // 创建窗口
        Game frame = new Game();
        // 设置标题
        frame.setTitle("吃热狗游戏");
        // 设置宽高
        frame.setSize(500,650);
        // 居中显示
        frame.setLocationRelativeTo(null);
        // 设置关闭
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置背景图片
        JLabel label = new JLabel(new ImageIcon(Game.class.getResource("/bg.png")));
        frame.add(label);

        // 需要一直来创建热狗的
        frame.createDogs();

        // 调用绘图的方法
        frame.gogo(frame);

        // 添加监听
        frame.addMouseMotionListener(frame);

        // 显示窗口
        frame.setVisible(true);
    }

    /**
     * 每隔100毫秒绘图一次
     */
    private void gogo(Game frame) {
        // 创建任何
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                frame.repaint();
            }
        };
        // 定时器
        java.util.Timer timer = new java.util.Timer();
        // 开启定时任务
        timer.schedule(timerTask,0,100);
    }

    /**
     * 使用定时器的方式来创建热狗
     */
    private void createDogs() {
        // 创建任何
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                // 创建热狗对象
                HotDog dog = new HotDog();
                // 存入到list集合中
                list.add(dog);
            }
        };
        // 定时器
        java.util.Timer timer = new java.util.Timer();
        // 开启定时任务
        timer.schedule(timerTask,0,1500);
    }


    /**
     * 绘图
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        // 把思聪画上去
        g.drawImage(wsc.getImage(),wsc.getX(),wsc.getY(),null);

        // 再画热狗上去
        for (int i = 0; i < list.size(); i++) {
            HotDog hotDog = list.get(i);
            g.drawImage(hotDog.getImage(),hotDog.getX(),hotDog.getY(),null);
            // 让热狗移动
            hotDog.move(list);
            // 调用清除的方法
            hotDog.clear(wsc,list);
        }
    }


    @Override
    public void mouseDragged(MouseEvent e) {

    }

    /**
     * 鼠标移动监听事件
     * @param e
     */
    @Override
    public void mouseMoved(MouseEvent e) {
        int x = e.getX();
        wsc.setX(x);
    }

}